<?php
namespace catchAdmin\product\model;

use catchAdmin\product\model\search\UnitSearch;
use catcher\base\CatchModel;
use think\facade\Db;

class Unit extends CatchModel
{

    use UnitSearch;
    
    protected $name = 'db_unit';
    protected $field = [
            'id', //
			'unit_code', // 单位编号
			'unit_name', // 单位名称
			'remarks', // 备注
			'tenant_id', // 商户id
            'creator_id', // 创建者ID
			'created_at', // 创建时间
			'updated_at', // 更新时间
			'deleted_at', // 删除状态，0未删除 >0 已删除
            'serial_number'
    ];
    /**
     * 用户列表
     *
     * @time 2019年12月08日
     * @return array|\think\Paginator
     *@throws \think\db\exception\DbException
     */
    public function getList($tenant_id=0)
    {
        $where = [];
        if($tenant_id !== 0){
            $where[]=['tenant_id','=',$tenant_id];
        }
        return $this->withoutField(['updated_at'], true)
            ->catchSearch()
            ->where($where)
            ->order($this->aliasField('id'), 'desc')
            ->paginate();
    }

    /**
     * 无分页列表
     *
     * @time 2019年12月08日
     * @return array|\think\Paginator
     *@throws \think\db\exception\DbException
     */
    public function getAttrList($tenant_id=0)
    {
        $where = [];
        if($tenant_id !== 0){
            $where[]=['tenant_id','=',$tenant_id];
        }
        return $this
            ->catchSearch()
            ->field('id,unit_code,unit_name,serial_number')
            ->where($where)
            ->order($this->aliasField('id'), 'desc')
            ->select();
    }

    public static function onBeforeInsert($unit){
        //查询数量
        $count =  Db::table('db_unit')->where('tenant_id',$unit->tenant_id)->count();
        //公司代码
        $co_code = Db::table('users')->where('id',$unit->tenant_id)->value('co_code');

        if( !empty($co_code) ){
            $head = strtoupper($co_code)  . "U";
            $unit->serial_number = $head . str_pad($count + 1,5,'0',STR_PAD_LEFT);
        }else{//无锡公司
            $unit->serial_number = "U" . str_pad($count + 1,5,'0',STR_PAD_LEFT);
        }
    }
}
